#ifndef __INPUT_CAPTURE_Config_H
#define __INPUT_CAPTURE_Config_H

#include "stm32f10x.h"                  // 包含STM32F10x系列标准外设库头文件
                                        // 提供GPIO、TIM等外设的寄存器定义和结构体

/* 外设引脚定义 ------------------------------------------------------------*/
// 输入捕获引脚相关宏定义，用于配置GPIO和TIM外设
#define CAPTURE_CLK   RCC_APB2Periph_GPIOA  // 输入捕获引脚所在GPIO端口时钟
#define CAPTURE_PORT  GPIOA                 // 输入捕获引脚端口（GPIOA）
#define CAPTURE_PIN   GPIO_Pin_6            // 输入捕获引脚（PA6）
                                            // 对应TIM3_CH1（定时器3通道1）

/* 定时器宏定义 ------------------------------------------------------------*/
// 定时器相关宏定义，用于配置TIM3作为输入捕获功能
#define TIMx          TIM3                  // 定义使用的定时器为TIM3
#define TIM_CLK       RCC_APB1Periph_TIM3   // TIM3的时钟使能位

/**
  * @brief  配置TIM3通道1为输入捕获模式，用于测量外部信号频率
  * @param  无
  * @retval 无
  * @note   初始化流程：
  *         1. 使能GPIOA时钟并配置PA6为上拉输入模式
  *         2. 使能TIM3时钟并配置时基单元（1MHz计数频率）
  *         3. 配置TIM3通道1为上升沿捕获，直接映射模式
  *         4. 设置从模式为复位模式（检测到上升沿时复位计数器）
  *         5. 启动TIM3计数器
  *         硬件连接：将待测量的信号连接到PA6引脚
  */
void INPUT_CAPTURE_Config(void);

/**
  * @brief  获取输入信号的频率值
  * @param  无
  * @retval 频率值（单位：Hz）
  * @note   测量原理：
  *         - 基于两次相邻上升沿之间的计数值计算频率
  *         - 计算公式：频率 = 1MHz / (捕获值 + 1)
  *         测量范围：
  *         - 最小频率：约15Hz（受限于定时器最大计数值65535）
  *         - 最大频率：约1MHz（受限于系统时钟和捕获处理时间）
  *         注意事项：
  *         - 调用前需先调用INPUT_CAPTURE_Config()进行初始化
  *         - 对于频率低于15Hz的信号，测量结果会溢出（返回0）
  */
u32 INPUT_CAPTURE_GetFreq(void);

#endif /* __INPUT_CAPTURE_Config_H */  // 条件编译结束标记
